{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e2c1d08d-3d50-455e-ba15-1bab71ce69fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "# PR曲线画法\n",
    "# 学习机器学习算法 一直对PR曲线迷迷糊糊，此次重新梳理一下\n",
    "# 用于生成PR曲线的数据为随机数据，不能代表真正模型预测评估，只用于完成PR曲线\n",
    "# @author huzhixin\n",
    "# @email zhixinhu at qq.com"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "81f2b098-afa0-45e8-b099-f1a6d750aa66",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5cf68881-a069-4d52-8c1c-1072a5871e94",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 产生两组 0到1之间的随机数\n",
    "\n",
    "# 演示数据1\n",
    "rand_1 = list(np.random.random(20))\n",
    "\n",
    "# 生成标签和预测概率数据\n",
    "test_1 = []\n",
    "for i in range(20):\n",
    "    label = \"P\" if i < 10 else \"N\"\n",
    "    test_1.append({\"value\": rand_1[i], \"label\": label})\n",
    "\n",
    "# 对概率进行排序\n",
    "rand_1.sort(reverse=True)\n",
    "\n",
    "# 演示数据2\n",
    "rand_2 = list(np.random.random(20))\n",
    "\n",
    "# 生成标签和预测概率数据\n",
    "test_2 = []\n",
    "for i in range(20):\n",
    "    label = \"P\" if i < 10 else \"N\"\n",
    "    test_2.append({\"value\": rand_2[i], \"label\": label})\n",
    "\n",
    "# 对概率进行排序\n",
    "rand_2.sort(reverse=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0dd51055-bb1b-491f-b252-49e82a759547",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算PR值\n",
    "# values 模型预测的所有样本为正的概率列表\n",
    "# data 模型预测的数据与样本自身正确标签\n",
    "\n",
    "def get_pr(values=[], datas=[]):\n",
    "    \n",
    "    pr = []\n",
    "    \n",
    "    for value in values:\n",
    "        counts = {\"TP\": 0, \"FP\": 0, \"TN\": 0, \"FN\": 0}\n",
    "        for data in datas:\n",
    "            predict_label = \"P\" if data[\"value\"] >= value else \"N\"\n",
    "            if predict_label == \"P\" and data[\"label\"] == \"P\":\n",
    "                counts[\"TP\"] += 1\n",
    "            elif predict_label == \"P\" and data[\"label\"] == \"N\":\n",
    "                counts[\"FP\"] += 1\n",
    "            elif predict_label == \"N\" and data[\"label\"] == \"N\":\n",
    "                counts[\"TN\"] += 1\n",
    "            elif predict_label == \"N\" and data[\"label\"] == \"P\":\n",
    "                counts[\"FN\"] += 1\n",
    "        # 计算查准率\n",
    "        p = round(counts[\"TP\"]/(counts[\"TP\"]+counts[\"FP\"]), 2)\n",
    "\n",
    "        # 计算查全率\n",
    "        r = round(counts[\"TP\"]/(counts[\"TP\"]+counts[\"FN\"]), 2)\n",
    "        pr.append({\"p\": p, \"r\": r})\n",
    "    \n",
    "    return pr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2fd3def9-5745-4dce-bb51-72e56bb7c14d",
   "metadata": {},
   "outputs": [],
   "source": [
    "pr_1 = get_pr(rand_1, test_1)\n",
    "pr_2 = get_pr(rand_2, test_2)\n",
    "\n",
    "# 生成展示数据\n",
    "data_show = []\n",
    "for pr in pr_1:\n",
    "    data_show.append({'p': pr['p'], 'r': pr['r'], 'model': 'model_1'})\n",
    "    \n",
    "for pr in pr_2:\n",
    "    data_show.append({'p': pr['p'], 'r': pr['r'], 'model': 'model_2'})\n",
    "\n",
    "for pr in range(20):\n",
    "    value = (1.0/20)*pr\n",
    "    data_show.append({'p': value, 'r': value, 'model': 'BEP'})\n",
    "data_show = pd.DataFrame(data_show)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "bc297049-0ba9-44a1-9d57-87dd57c848e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 438.375x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.relplot(x=\"r\", y=\"p\", ci=None, hue='model', kind=\"line\", data=data_show);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d5faacf-1b02-4ece-9623-42045cc7e393",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a9e4d393-c12b-433a-9dec-bebc25b0a606",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Paddle",
   "language": "python",
   "name": "paddle"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
